/*
构建一个单向链表，链表中包含一组整数数据。输出链表中的所有元素。

要求：
1. 使用自定义的链表数据结构
2. 提供一个 linkedList 类来管理链表，包含构建链表和输出链表元素的方法
3. 在 main 函数中，创建一个包含一组整数数据的链表，然后调用链表的输出方法将所有元素打印出来

*/
#include<iostream>
using namespace std;

//使用结构定义体链表节点
struct ListNode
{
    int val;//节点上存储的元素
    ListNode* next;// 指向下一个节点的指针
    ListNode(int x):val(x),next(nullptr){};// 节点的构造函数，初始化列表
};
int main()
{
    int n,val;
    //创建虚拟头节点
    ListNode* dummyHead = new ListNode(0);
    
    while(cin>>n)
    {
        ListNode* current = dummyHead;//创建指针变量（节点）指向虚拟头节点的地址，方便链表的插入等操作，
    //也是为了避开对头节点的操作
        for(int i = 0;i<n;i++)
        {
            cin>>val;// 根据读取的值 val 创建一个新的链表节点，并初始化它的值为 val// 根据读取的值 val 创建一个新的链表节点，并初始化它的值为 val
            ListNode* newNode =new ListNode(val);
            current -> next = newNode;
            current = current -> next;

        }
        current = dummyHead;
        // 遍历链表节点并逐个输出
        while(current->next != NULL)
        {
            cout<<current->next->val<<" ";
            current = current ->next;
        }
        cout<<endl;
    }
}